package com.cgnpc.scp.common.utils;

import cn.com.cgnpc.aep.bizcenter.appcenter.sdk.result.ApiResult;
import com.cgnpc.scp.purchase.mybatis.entity.ContractProcessApply;

import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

/******************************
 * 用途说明: 流程工具类
 * 作者姓名: chenshijie
 * 创建时间: 2020/08/29 17:14
 ******************************/
public class BpmUtil {

    //访问成功状态编码200
    private static final String CODE = "200";

    /**********************************
     * 用途说明: 新建年度需求（合同范围内）审批流程
     * 参数说明 params
     * 返回值说明:
     ***********************************/
    public static Map getProcID(ApiResult result) {
        if(CODE.equals(result.getCode())){
            List<Map> data = (List<Map>) result.getData();
            int ver = -1;
            int procID = 0;
            int procSetID = 0;
            for(Iterator<Map> it = data.iterator(); it.hasNext();) {
                Map next = it.next();
                Integer ver1 = (Integer) next.get("ver");
                if(ver1 > ver) {
                    ver = ver1;
                    Integer procID2 = (Integer) next.get("procID");
                    procID = procID2;
                    Integer procSetID2 = (Integer) next.get("procSetID");
                    procSetID = procSetID2;
                }
            }

            Map map = new HashMap();
            map.put("procID",procID);
            map.put("procSetID",procSetID);
            return map;
        }
        return null;
    }

    /**********************************
     * 用途说明: map转对象（通过json）
     * 参数说明
     * 返回值说明:
     ***********************************/
    public static Object mapToObjectByJson(Map<String, Object> map, Class<?> beanClass) throws Exception {
        if (map == null)
            return null;

        String s = JacksonUtil.writeValueAsString(map);
        Object o = JacksonUtil.readValue(s, beanClass);

        return o;
    }

    /**********************************
     * 用途说明: map转对象
     * 参数说明
     * 返回值说明:
     ***********************************/
    public static Object mapToObject(Map<String, Object> map, Object obj) throws Exception {
        if (map == null)
            return null;

        org.apache.commons.beanutils.BeanUtils.populate(obj, map);

        return obj;
    }

    /**********************************
     * 用途说明: 对象转map
     * 参数说明 params
     * 返回值说明:
     ***********************************/
    public static Map<?, ?> objectToMap(Object obj) {
        if(obj == null)
            return null;

        return new org.apache.commons.beanutils.BeanMap(obj);
    }
}
